$(document).ready(function () {
    
  /* ------------
    |  GRÁFICAS  |
     ------------ */

    oyentesBotonesGrafica();
    enviarPeticionGraficaActividadProductos('ultimo_anio');
    $('#loaderGraficaActividadProductos').show();


    /*  -------------------
       |  TABLA PRODUCTOS  |
        ------------------- */

    $('#tabla_informes_productos').hide();

    $('#tabla_informes_productos').jtable({
        title: 'Productos',
        addRecordButton: false,
        openChildAsAccordion: true,
        actions: {
            listAction: function (postData, jtParams) {
                return $.Deferred(function ($dfd) {
                    $.ajax({
                        url: '../php/informes/operacionesInformesVentas.php',
                        type: 'POST',
                        dataType: 'json',
                        data: crearPeticionJsonInformesProductos('tiempo ASC, SUM(importeTotal) DESC', postData),
                        success: function (data) {
                            $dfd.resolve(data);
                        },
                        error: function (data) {
                            console.log(data);
                            $dfd.reject();
                        }
                    });
                });
            }
        },
        fields: {
            estado: {
                title: '',
                listClass: 'campoCentrado',
                width: '10%',
                display: function (datosOperacion) {
                    if(parseFloat(datosOperacion.record.actualidad) === parseFloat(datosOperacion.record.pasado)){
                        return $('<div><i class="fa fa-minus text-lg text-blue"></i></div>');
                    }else if(datosOperacion.record.pasado == '-' || parseFloat(datosOperacion.record.actualidad) > parseFloat(datosOperacion.record.pasado)) {
                        return $('<div><i class="fa fa-arrow-circle-o-up text-lg text-green"></i></div>');
                    }else{
                        return $('<div><i class="fa fa-arrow-circle-o-down text-lg text-red"></i></div>');
                    }
                }
            },
            descripcion: {
                title: 'Nombre',
                width: '50%',
                sorting: false,
            },
            actualidad: {
                title: 'Año actual',
                listClass: 'campoCentrado',
                width: '20%',
                display: function (datosOperacion) {
                    if(datosOperacion.record.actual == '-'){
                        return datosOperacion.record.actualidad;
                    }else{
                        return  parseFloat(datosOperacion.record.actualidad).toFixed(2).replace(".", ",") + " €";
                    }
                }
            },
            pasado: {
                title: 'Año anterior',
                listClass: 'campoCentrado',
                width: '20%',
                display: function (datosOperacion){
                    if(datosOperacion.record.pasado == '-'){
                        return datosOperacion.record.pasado;
                    }else{
                        return  parseFloat(datosOperacion.record.pasado).toFixed(2).replace(".", ",") + " €";
                    }
                }
            }
        }
    });

    var botonExportar = $('<div />')
                        .addClass('boton-tabla')
                        .appendTo('.table-primary > .table-header');
    
    var enlaceExportar = $('<a />')
                        .addClass('btn btn-default btn-labeled')
                        .attr('href', '#')
                        .html('<span class="btn-label icon fa fa-cloud-download"></span> Exportar tabla a Excel')
                        .appendTo(botonExportar);

    $('.table-primary > .table-header').append(botonExportar);
});

  /* ----------
    |  TABLAS  |
     ---------- */

function crearPeticionJsonInformesProductos(ordenacion, tipoFecha){
    informacionJson = {};
    datosPeticionInformesProductos = {};
    datosPeticionInformesProductos.accion = 'listarProductos';
    datosPeticionInformesProductos.tipoFormulario = 'tabla_informes_productos';
    datosPeticionInformesProductos.tokenCSRF = $('#informes_productos_tabla_token_CSRF').val();
    datosPeticionInformesProductos.ordenacion = ordenacion;
    datosPeticionInformesProductos.tipoFecha = tipoFecha.filtroConsulta;
    informacionJson.datosPostInforme = datosPeticionInformesProductos;
    informacionJson.peticionAjax = 'SI';
    return informacionJson;
}

  /* ------------
    |  GRÁFICAS  |
     ------------ */

  /* ----------------------------
    |  OYENTES BOTONES GRÁFICAS  |
     ---------------------------- */


function oyentesBotonesGrafica() {
    $('.panelOpcionesGraficas a.btn').click(function(){
        $('#tabla_informes_productos').hide();
        $('.panelOpcionesGraficas a.btn').removeClass('active');
        $(this).addClass('active');
        enviarPeticionGraficaActividadProductos($(this).attr('value'));
    });

    $('#mostrar_tabla_productos').click(function(event) {
        $('#tabla_informes_productos').show();
        tipoFecha = $('.panelOpcionesGraficas a.btn.active').attr('value');
        $('#tabla_informes_productos').jtable('load',{ filtroConsulta: tipoFecha});
    });
}

  /* -----------------------
    |  ACTIVIDAD PRODUCTOS  |
     ----------------------- */

function enviarPeticionGraficaActividadProductos(tipo){
    datosEnvioPeticionActividadProductos = {};
    tipoFecha = {};
    tipoFecha['tipo'] = tipo;

    datosEnvioPeticionActividadProductos.accion = 'graficaActividadProductos';
    datosEnvioPeticionActividadProductos.tipoFecha = tipoFecha;
    datosEnvioPeticionActividadProductos.tipoFormulario = 'grafica_informes_productos';
    datosEnvioPeticionActividadProductos.tokenCSRF = $('#informes_productos_grafica_token_CSRF').val();
    // JSON.stringfy(obj) transforma un objeto a una cadena de texto
    // JSON.parse(cadena) transforma una cadena en un objeto
    // Realizamos la peticion POST con el JSON de parametro
    $.post("../php/informes/operacionesInformesVentas.php", {datosPostInforme: JSON.stringify(datosEnvioPeticionActividadProductos)}, callbackPeticionGraficaActividadProductosExito).fail(failPostPeticionGraficaActividadProductos);
}

function callbackPeticionGraficaActividadProductosExito(data){
    respuestaServidor = JSON.parse(data);
    $('#loaderGraficaActividadProductos').hide();

    var options = {
        chart: {
            renderTo: 'grafica_informes_actividad_productos',
            type: 'column',
            className: 'estiloGrafica',
            backgroundColor: 'rgba(0, 0, 0, 0.03)',
            borderColor: '#EBBA95',
            borderRadius: 20,
            borderWidth: 2,
        },
        credits: {
            enabled: false
        },
        navigation: {
            buttonOptions: {
                theme: {
                    'stroke-width': 1,
                    stroke: '#d4a886',
                    fill:'#EBBA95',
                    r: 5,
                    states: {
                        hover: {
                            stroke: '#d4a886',
                            fill: '#ffcaa2'
                        },
                        select: {
                            stroke: '#d4a886',
                            fill: '#cba080'
                        }
                    }
                }
            }
        },
        title: {
            text: 'Informe de actividad de los productos',
            // Para poder meter etiquetas de HTML en el título
            useHTML: true
        },
        xAxis: {
            title: {
                text: 'Productos',
                useHTML: true
            },
            categories: respuestaServidor.ejeX.categorias
        },
        yAxis: {
            title: {
                text: 'Euros',
                useHTML: true
            },
            min: 0
        },
        tooltip: {
                formatter: function () {
                    var s = '<b>' + this.x + '</b>';

                    $.each(this.points, function () {
                        s += '<br/>' + this.series.name + ': ' +
                            parseFloat(this.y).toFixed(2).replace(".", ",") + " €";
                    });

                    return s;
                },
                shared: true,
                crosshairs: false,
                valueSuffix: ' €'
        },
        series: [{
                    name: '2014',
                    data: respuestaServidor.ejeX.productos.actualidad
                },
                {
                    name: '2013',
                    data: respuestaServidor.ejeX.productos.pasado
                }],
        lang: {
            noData: 'No hay datos disponibles'
        },
        noData: {
            style:{
                fontWeight: 'bold',
                fontSize: '15px',
                color: '#303030'
            }
        }
    };
    var chart = new Highcharts.Chart(options);
}

function failPostPeticionGraficaActividadProductos(data){
    respuestaServidor = JSON.parse(data);
    console.log(respuestaServidor);
}